﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//头文件
//standard input output
//标准输入输出


//1.主函数：main
//	main函数的模板（整个项目mian函数有且仅有一个）
//int main() {
//	//写代码
//	return 0;
//}


//2.库函数之printf（注意：库函数的使用都需要引用头文件）
//int main() {
//	//直接打印字符串
//	printf("haha\n");//\n换行
//	printf("bbq\n");
//
//	//通过格式的指定打印
//	printf("%d\n", 100);//%d打印整形
//	printf("%c\n", 'a');//%c打印（单个）字符
//	printf("%f\n", 3.5f);//%f打印（单精度浮点型）小数，数字后面加上f代表是float类型的小数
//
//	//%d,%c,%f为占位符，相当于你人没有来，拿书包占了一个位置
//	//最后是逗号后面的数或者字符来替换
//
//	return 0;
//}
//库函数：
//C语言不提供这一些函数，但是提供标准：需要什么函数，函数的功能是什么之类的
//如printf是打印函数，scanf是输入数据等
//至于函数具体怎么实现，则是由C语言的编译器厂商根据标准实现这些函数称为库函数


//3.字符与ASCII编码
//int main() {
//	//打印32-127ASCII码值对于的字符
//	int i = 0;
//	for (i = 32; i <= 127; i++) {
//		if (i % 16 == 0) {
//			printf("\n");
//		}
//		printf("%c ", i);
//	}
//
//	return 0;
//}

//int main() {
//	printf("%d\n", 100);//100
//	printf("%c\n", 100);//d
//
//	//打印的格式不要使用错误，%c是打印100的ASCII码值对于的字符了
//
//	return 0;
//}
//字符：字母字符（abcdef)   特殊字符（# $ %）   数字字符（12345）
//字符A-Z的ASCII码值从65-90
//字符a-z的ASCII码值从97-122
//大小写字符的ASCII码1差值是32
//数组字符0-9的ASCII码48-57


//4.字符串和\0
//字符
//int main() {
//	'a';//字符
//	'w';
//	"abc";//字符串
//	"a";
//	"";//空字符串
//
//	return 0;
//}
//单引号括起来的被称为字符,如'a','w'
//双引号括起来的⼀串字符就被称为字符串,如:"abcdef","a"

//打印字符串
//int main() {
//	printf("hehe\n");//直接打印
//	printf("%s\n","haha");//%s是用来打印字符串
//
//	return 0;
//}

//字符串和\0
//int main() {
//	char arr1[] = "abc";
//	char arr2[] = { 'a','b','c' };
//	//[]中可以不放数字，但是必须初始化
//
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//
//	return 0;
//}
//\0是字符串的结束标志
//arr1实际存放的是a b c \0,一共4个字符
//arr2实际存放的是a b c ,一共3个字符
//在打印输出时，arr1遇到了\0停止了打印；而arr2中没有\0，访问的是c后面的内存
//但是c后面的内存中的东西谁也不知道是什么，程序会一直找，直到遇到\0才停止，才会出现乱码
//手动给arr2加上\0就不会出现乱码了。char arr2[] = { 'a','b','c','\0' };


//5.转义字符--转变了意思的字符
//int main() {
//	printf("%c\n", 'x');
//	printf("%c\n", '\'');//如果只想出现一个单引号，就必须加转义字符\'
//
//	printf("%s\n", "abc");
//	printf("%s\n","\"");//如果只想出现一个双引号，就必须加转义字符\"
//
//	printf("c:\test\code\test.c");//\t会被进行转义为制表符
//	printf("c:\\test\\code\\test.c");//防⽌它被解释为⼀个转义序列符
//
//	printf("abcdef");
//	printf("abc\ddef");//退格键，光标回退⼀个字符，但不删除字符
//	//相当于打印完abc后删除一格，再打印def
//
//	return 0;
//}

//\ddd
int main() {
	printf("%c\n", '\130');//X

	//d d d表⽰1~3个⼋进制的数字
	//\130中的0到表8^0,3代表8^1,1代表8^2
	//0*8^0=0	3*8^1=24	1*8^2=64
	//0+24+64=88
	//所以ddd打印的是ddd这一个8进制的数字转换为10进制之后对于的ASCII码值对应的字符

	printf("%c\n", '\30');//0

	//d d表⽰2个⼗六进制数字
	//\30中的0到表16^0,3代表16^1
	//		0*16^0=0	3*16^1=48
	//0+48=48
	//所以dd打印的是dd这一个16进制的数字转换为10进制之后对于的ASCII码值对应的字符


	return 0;
}

//6.